package com.weiweiqin.weixin.service;


import com.weiweiqin.weixin.message.resp.Article;
import com.weiweiqin.weixin.message.resp.NewsMessage;
import com.weiweiqin.weixin.message.resp.TextMessage;
import com.weiweiqin.weixin.util.MessageUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 核心服务类
 *
 * @author liufeng
 * @date 2013-10-17
 */
public class CoreService {

    private static final Log LOG = LogFactory.getLog(CoreService.class);

    /**
     * 处理微信发来的请求
     *
     * @param request
     * @return xml
     */

    public static String processRequest(HttpServletRequest request, String value) {

        // xml格式的消息数据
        String respXml = null;
        try {
            // 调用parseXml方法解析请求消息
            Map<String, String> requestMap = MessageUtil.parseXml(request);
            LOG.info("requestMap"+requestMap.toString());
            // 发送方帐号
            String fromUserName = requestMap.get("FromUserName");
            // 开发者微信号
            String toUserName = requestMap.get("ToUserName");
            // 消息类型
            String msgType = requestMap.get("MsgType");
            TextMessage textMessage = new TextMessage();
            textMessage.setToUserName(fromUserName);
            textMessage.setFromUserName(toUserName);
            textMessage.setCreateTime(new Date().getTime());
            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
            // 事件推送
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
                // 事件类型
                String eventType = requestMap.get("Event");
                // 订阅
                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
                    textMessage.setContent("终于等到你~\n" +
                            "\n" +
                            "点击【在家赚钱】——选择任务，查看任务---点击“领取任务”---按照页面要求完成任务---点击“提交材料”成功提交截图等材料 后等待雇主审核即可，审核通过后佣金发放到钱袋子中，提现到微信实时到账噢。\n" +
                            "\n" +
                            "（有任务屋账号的直接账号密码登录即可，没有的记得注册）\n" +
                            "\n" +
                            "接下来开始做任务赚钱吧，多劳多得~");
                    // 将消息对象转换成xml
                    respXml = MessageUtil.messageToXml(textMessage);
                }
                // 取消订阅
                else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
                    // TODO 暂不做处理
                }
                // 自定义菜单点击事件
                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
                    // 事件KEY值，与创建菜单时的key值对应
                    String eventKey = requestMap.get("EventKey");
                    // 根据key值判断用户点击的按钮
                    if (eventKey.equals("help")) {
                        Article article = new Article();
                        article.setTitle("任务屋新手教程");
                        article.setDescription("不知道如何玩转浩夜众包的，看过来！");
                        article.setPicUrl("https://mmbiz.qpic.cn/mmbiz_jpg/iaMI8gFuoI4KuqsSgSdiagm9xwtA1cawp7n5FQO6U5eiarP3nTE4UicX06XbcEics3hCoPsv4tEs9Nlv8sfibH2RbaFw/0?wx_fmt=jpeg");
                        article.setUrl("https://mp.weixin.qq.com/s?__biz=MzI4MzczODg5Nw==&mid=2247483674&idx=1&sn=f9edcd8a679a31441fc30c565aafb6e5&chksm=eb875764dcf0de72002c21e53d2df96a374b02a32d67d5e2175d8d41866e1c1d6990b5c1d401&mpshare=1&scene=1&srcid=0404Q6pGzwgRuCvmFyIZemTv#rd");
                        List<Article> articleList = new ArrayList<Article>();
                        articleList.add(article);
                        // 创建图文消息
                        NewsMessage newsMessage = new NewsMessage();
                        newsMessage.setToUserName(fromUserName);
                        newsMessage.setFromUserName(toUserName);
                        newsMessage.setCreateTime(new Date().getTime());
                        newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
                        newsMessage.setArticleCount(articleList.size());
                        newsMessage.setArticles(articleList);
                        respXml = MessageUtil.messageToXml(newsMessage);
                    } else if (eventKey.equals("iteye")) {
                        textMessage.setContent("ITeye即创办于2003年9月的JavaEye,从最初的以讨论Java技术为主的技术论坛，已经逐渐发展成为涵盖整个软件开发领域的综合性网站。\n\nhttp://www.iteye.com");
                        respXml = MessageUtil.messageToXml(textMessage);
                    }
                }
            }
            // 当用户发消息时
            else {
                if("验证码".equals(requestMap.get("Content"))){
                    textMessage.setContent("【任务屋】验证码："+value+"，为保障您的账户安全，验证码请勿告诉他人。感谢您的支持！");
                    respXml = MessageUtil.messageToXml(textMessage);
                }else {
                    textMessage.setContent("请通过菜单使用服务！\n绑定帐号直接点击【找兼职】,没有绑定微信的系统自动跳到绑定页面!");
                    respXml = MessageUtil.messageToXml(textMessage);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return respXml;
    }
}
